package com.tanhua.dubbo.api;

import com.tanhua.domain.mongo.CommonLikeUser;
import com.tanhua.domain.mongo.UserLike;
import com.tanhua.domain.vo.PageResult;

import java.util.List;

/**
 * @author
 * @date 2021/01/30
 */
public interface UserLikeApi {

    /**
     * 查询用户喜欢了多少人
     *
     * @param userId 用户id
     * @return userId喜欢的人的数量
     */
    long queryLikeCount(long userId);

    /**
     * 查询用户有多少粉丝（有多少人喜欢这个用户）
     *
     * @param userId 用户id
     * @return 粉丝数量
     */
    long queryFansCount(long userId);

    /**
     * 查询好友数量（相互喜欢）
     *
     * @param userId 用户id
     * @return 好友数量
     */
    long queryFriendsCount(long userId);

    /**
     * 分页查询好友列表（相互喜欢列表）
     *
     * @param userId   用户id
     * @param page     页码
     * @param pagesize 查询几条
     * @return 分页结果
     */
    PageResult<CommonLikeUser> queryFriendsList(Long userId, int page, int pagesize);

    /**
     * 分页查询喜欢的用户列表
     *
     * @param userId   用户id
     * @param page     页码
     * @param pagesize 查询几条
     * @return 分页结果
     */
    PageResult<CommonLikeUser> queryLikeList(Long userId, int page, int pagesize);

    /**
     * 分页查询粉丝列表
     *
     * @param userId   用户id
     * @param page     页码
     * @param pagesize 查询几条
     * @return 分页结果
     */
    PageResult<CommonLikeUser> queryFansList(Long userId, int page, int pagesize);

    /**
     * 分页查询来访者
     *
     * @param userId   用户id（被访问者）
     * @param page     页码
     * @param pagesize 查询几条
     * @return 分页结果
     */
    PageResult<CommonLikeUser> findVisitorList(Long userId, int page, int pagesize);

    /**
     * 删除对某一用户的喜欢
     *
     * @param userId     用户id
     * @param likeUserId 将要取消喜欢的用户id
     */
    void delete(Long userId, Long likeUserId);

    /**
     *  保存喜欢 粉丝
     * @param userLike
     */
    void save(UserLike userLike);

    /**
     * 单向喜欢
     * @param likeUserId
     */
    String singleLove(Long userId, Long likeUserId);

    /**
     *查询粉丝用户
     */
    UserLike userList(Long userId,Long likeUserId);

    /**
     * 查询喜欢用户
     */



}